CMRKCTRL.DLL ============ Pour une description en Français, voir la deuxième partie de ce document. ------------------------------------------------------------------------ CMRKCTRL.DLL is a "BETA" version of the interface controller DLL for CATrain, designed for the Märklin Digital(c) system. Since this DLL has not yet been tested in all modes with a genuine Märklin 6051 control unit, this freeware is provided "as is", without any warranty of functioning. The only retribution requested to the "Beta testers" is a test report with the encountered problems and some suggestions. Some advises: - To use CMRKCTRL.DLL, verify that the command line "CTRLCOM=CMRKCTRL.DLL" is present into the [DLL] paragraph of the CATRAIN.INI file. - The Baud-Rate of the serial line must be set to 2400 BD for the communication with the 6051 Märklin Controller. - In case of problems encountered for controlling the "mechanical" devices or during the train circulation, it is possible to modified some parameter default values by adding the following lines inside the [PARAMETERS] paragraph of CATRAIN.INI: The following line defines the pulse duration for the command of an electromechanical device: (default 216 ms) CTRLPERIOD=216 The following line defines the period for the polling of the feed-back information: (default 648 ms) POLLPERIOD=648 The following line defines the maximum tolerated time for a loss of synchronization between the model and the feed-back information provided about train location: (default 10 seconds) SYNCTIMEOUT=10 The following line defines the rail distance that a train must cross before that the previously occupied block (rail section) is liberated and the corresponding signal is set to Red. (default 3 rails). SECTFREEDIST=3 The following lines define the rail distance before the lowering and after the raising of the level crossing barriers. LCROSSDETECT=7 LCROSSLEAVE=2 The following line defines the slope incidence on the electrical power applied to the loco engine: (default 2) SLOPEINCIDENCE=2 The "Tracing" functionality of CATrain permits to visualize in a file the traffic exchanged between the computer and the 6051 control unit. This file is named "Ctrl.trc". Hereafter are described the command messages exchanged between the computer and the control unit. Those commands are borrowed to the Märklin protocol. Setting the speed of a loco: --------------------------- special function off (~ front light off): 2 bytes: speed, followed by an address with the following meaning: speed = value from 0 to 14. address = loco decoder address (<80). special function on (~ front light on): 2 bytes: 16 decimal + speed, followed by an address with the following meaning: speed = value from 0 to 14 (+16 => 16 to 30) address = loco decoder address (<80). Reversing the motion direction: ------------------------------ 2 bytes: 15 decimal followed by the address byte of the loco when the special function is off (light off) or 31 decimal followed by the address byte of the loco when the special function is on (light on) activating a signal or a rail-switch: ------------------------------------ turnout to straight or signal to green: 2 bytes: 33 decimal followed by the byte address of the device. turnout to straight or signal to green: 2 bytes: 34 decimal followed by the byte address of the device. resetting the last activation command of a signal or a switch: ------------------------------------------------------------- (normally after more or less 250 ms): 1 byte 32 decimal Establishing the polling of the feed-back information: ----------------------------------------------------- (train presence detection polling mode, with automatic reset of the information after reading): 1 byte 192 decimal N.B. presently, this message is sent at each polling cycle. Polling the feed-back information: --------------------------------- (train presence detection): 1 byte 159 decimal for every polling cycle (about every 600 ms). At each polling cycle, the controller must sent back to the PC the status of all train presence detectors. Each detector is represented by a single information bit. (b0 for detector 1, b1 for detector 2, and so on) When a train is detected, the corresponding detector bit is set to 1. The whole information is sent by 16 bit packets. This means that at least two bytes are sent back for 1 to 16 detectors, four bytes for 17 to 32 detectors and so on. The unused bits are set to 0. Two extra commands are provided: Power On: -------- 1 byte: 96 decimal Power Off: --------- 1 byte: 97 decimal Under no circumstances will Joel Bouchat be liable for damages arising from the use of this software. ============================================================================== CMRKCTRL.DLL est une version "BETA" du contrôleur d'interface pour CATrain, conçu pour le système Märklin Digital(c). Comme le DLL n'a pu encore pu être testé dans toutes les conditions d'utilisation en liaison avec une véritable unité de contrôle Märklin 6051 et ses accessoires, ce DLL est livré en l'état, sans garantie, à l'intention des "Beta testeurs" volontaires ... L'unique rétribution demandée est l'envoi d'un rapport de test sur les dysfonctionnements plus ou moins graves constatés et les solutions et améliorations proposées. Quelques conseils: - Pour utiliser CMRKCTRL.DLL, vérifiez que la ligne de commande "CTRLCOM=CMRKCTRL.DLL" est présente dans le paragraphe [DLL] du fichier d'initialisation CATRAIN.INI. - Le Baud-Rate de la ligne série doit être fixé à 2400 BD pour l'interface Märklin 6051. - En cas de problèmes de contrôle des éléments "mécaniques" ou de synchronisation des trains. Il est possible de modifier certains paramètres par défaut en insérant quelques ligne de commandes dans le paragraphe [PARAMETERS] de CATRAIN.INI: La ligne suivante définit la longueur de l'impulsion de contrôle d'un élément électromagnétique (par défaut 216 ms): CTRLPERIOD=216 La ligne suivante définit la période de "polling" des informations de rétrosignalisation (par défaut 648 ms): POLLPERIOD=648 La ligne suivante définit le temps maximum de désynchronisation toléré entre le modèle informatique et les informations fournies par les unités de rétrosignalisation sur la position réelle des trains: (par défaut 10 secondes) SYNCTIMEOUT=10 La ligne suivante définit la distance (en voies) parcourue par le modèle d'un train avant la libération du tronçon précédemment occupé et la mise au rouge du signal correspondant: (par défaut 3 voies) SECTFREEDIST=3 Les lignes suivantes définissent les distances (en voies) pour l'abaissement et le relevage des barrières d'un passage à niveau: LCROSSDETECT=7 LCROSSLEAVE=2 La ligne suivante définit l'incidence du degré des pentes et des côtes sur la commande électrique des moteurs des locos: (par défaut 2) SLOPEINCIDENCE=2 La fonction de "Trace" de CATrain permet de visualiser dans un fichier appelé ""Ctrl.trc", le trafic échangé entre l'ordinateur et l'unité 6051. Voici les commandes transmises par CATtrain à l'unité de commande, ces commandes sont dérivées du protocole Märklin: Commande de la vitesse d'une loco: --------------------------------- sans activation de la fonction spéciale (phares éteints): 2 bytes: vitesse, suivi d'un byte d'adresse avec la signification suivante: vitesse = consigne de vitesse (0 a 14) adresse = adresse de la loco (limitée a 80). avec activation de la fonction spéciale (phares allumés): 2 bytes: 16 décimal + vitesse, suivi d'un byte d'adresse avec la signification suivante: vitesse = consigne de vitesse (0 a 14) (+16 => 16 a 30) adresse = adresse de la loco (limitée a 80). Changement du sens de marche d'une loco: --------------------------------------- 2 bytes: 15 décimal suivi de d'un byte d'adresse (limité a 80) avec la fonction spéciale désactivée(phares éteints) ou 31 décimal suivi de d'un byte d'adresse (limité a 80) avec la fonction spéciale activée (phares allumés). activation d'un signal ou d'un aiguillage: ----------------------------------------- aiguillage droit ou signal vert: 2 bytes: 33 décimal suivi d'un byte d'adresse de l'élément. aiguillage courbe ou signal rouge: 2 bytes: 34 décimal suivi d'un byte d'adresse de l'élément. arrêt de la dernière commande d'activation d'aiguillage ou de signal: -------------------------------------------------------------------- (normalement après environ 250 ms): 1 byte 32 décimal Etablissement du polling des informations de rétro signalisation: ---------------------------------------------------------------- (mode de polling des détecteurs de présence des trains, avec reset des infos lors de la lecture): 1 byte 192 décimal N.B. cette info est envoyée actuellement à chaque cycle de polling. Polling des informations de rétro signalisation: ----------------------------------------------- (détection de présence des trains): 1 byte 159 décimal a chaque cycle de polling (environ toutes les 600 ms). A chaque cycle de polling, le contrôleur doit renvoyer au PC l'état de tous les détecteurs de présence ou de passage des trains. Chaque détecteur est représenté par 1 bit d'information (b0 pour le détecteur 1, b1 pour le détecteur 2, et ainsi de suite). Lorsque le bit est a 1, un train est détecté. Cette information est envoyée en paquets de 16 bits (2 bytes). C'est à dire 2 bytes minimum pour 1 à 16 détecteurs, 4 bytes pour 17 à 32 détecteurs et ainsi de suite. Les bits non utilisés sont mis a 0. Deux messages supplémentaires sont également utilisés: Mise en route alimentation: -------------------------- 1 byte: 96 décimal Arrêt général: ------------- 1 byte: 97 décimal En aucune circonstance Joël Bouchat ne pourra être tenu pour responsable des dommages qui pourraient découler de l'utilisation de ce logiciel.